/**
 * xml文件导入测试
 */

//const freedatabase = require("../build/Release/freedatabase.node");
import { importPModelXmlFile, NativeConnectionOptions } from "../free";
import * as iconv from 'iconv-lite';

let opts = new NativeConnectionOptions();
opts.setHost("192.168.30.241");
opts.setPort(3306);
opts.setUsername("fdb");
opts.setPassword("123456");
opts.setDbName("fdb");



// // 导入文件测试
// function importTest() {
//     //导入xml文件
//     console.time("t1");
//     console.time("t2");
//     freedatabase.importPModelXmlFile("zxt", "Dianqi1", "E:\\test\\dianqi1", opts, () => {
//         console.log("callback");
//         console.timeEnd("t1");
//     })
//     console.timeEnd("t2");
// }



// // 打开数据库
// console.time("opendatabase");
// freedatabase.openDataSource(opts, () => {
//     console.timeEnd("opendatabase");

//     console.time("query");
//     freedatabase.queryPModelInfo((err: any, arr: any) => {
//         console.log(arr);
//         console.timeEnd("query");
//     });

//     let modelId = 14;

//     console.time("querypage");
//     freedatabase.queryPModelInfoPage(0, 1, (err: any, num: any, arr: any) => {
//         console.log(num);
//         console.log(arr);
//         console.timeEnd("querypage");
//     });

//     console.time("existpmodel");
//     freedatabase.existsPModel("dianqi", (err: any, id: any) => {
//         console.log(id);
//         console.timeEnd("existpmodel");
//     });

//     console.time("author");
//     freedatabase.hasPModelPermission("zxt", 42, (err: any, access: any) => {
//         console.log("auth:" + access);
//         console.timeEnd("author");
//     });

//     console.time("getRootNode");
//     freedatabase.queryPModelRootTree(modelId, (err: any, node: any) => {
//         console.log(node);
//         console.timeEnd("getRootNode");

//         console.time("getChildNode");
//         freedatabase.queryPModelChildTree(modelId, node.nodeGuid, (err: any, cnode: any) => {
//             console.log("下边是子节点的信息打印：");
//             console.log(cnode);
//             console.timeEnd("getChildNode");
//         });

//     });

//     // 查询属性
//     freedatabase.queryPModelCompAttr(modelId, "0AC74WH1r6FwLW21l$sC67", (err: any, attr: any) => {
//         console.log("属性查询：")
//         console.log(attr);
//     });

//     // 条件查询属性
//     freedatabase.queryPModelCompByProperty(modelId, "族", "烟感: 烟感", (err: any, attrvec: any) => {
//         console.log("条件查询属性")
//         console.log(attrvec);

//     });

//     // 条件查询属性--分页
//     freedatabase.queryPModelCompByPropertyPage(modelId, "族", "烟感: 烟感", 0, 1, (err: any, attrvec: any, val: any) => {
//         console.log("分页条件查询属性")
//         console.log(attrvec);
//         console.log(val);
//     });

//     // 查询所有构件类型
//     freedatabase.queryPModelCompType(modelId, (err: any, types: any) => {
//         console.log("查询构件类别：")
//         console.log(types);
//     });

//     freedatabase.queryPModelCompByType(modelId, 4, (err: any, types: any) => {
//         console.log("根据构件类别查询构件信息：")
//         console.log(types);
//     });


//     freedatabase.queryPModelCompByTypePage(modelId, 1, 0, 34, (err: any, num: any, types: any) => {
//         console.log("根据构件类别查询构件信息--分页：")
//         console.log(num);
//         console.log(types);
//     });

//     freedatabase.updatePModelProperty(modelId, "05UT0t70H3vvz_xtFSRZ$9", "嵌板", "aaaaa", (err: any, num: any) => {
//         console.log("根据属性guid更新一条属性：")
//     });

//     let taskOpts = new freedatabase.TaskOptions();
//     taskOpts.setTaskName("测试任务");
//     taskOpts.setGuid("guid:" + Date.now().toString());
//     taskOpts.setPlanS("2018-05-13 17:02:00");
//     freedatabase.insertPModelTask(modelId, taskOpts, (err: any, num: any) => {
//         console.log("插入一条时间任务");
//     });

//     freedatabase.queryPModelTaskPage(modelId, 1, 2, (err: any, num: any, arr: any) => {
//         console.log("按页查询任务：" + num);
//         console.log(arr);
//     });

//     //let buf = new Buffer([49, 18, 60, 65, 79, 32, 70, 59]);
//     // console.log(iconv.decode(<Buffer>buf, 'gb2312'));

//     // 关闭数据库
//     // console.time("closedatabase");
//     // freedatabase.closeDataSource(() => {
//     //     console.timeEnd("closedatabase");
//     // })

// })


(async function () {

    // 导入模型属性数据
    console.time("t_import");
    await importPModelXmlFile("zxt", "test", "E:\\data\\pmts\\guangzhouditie-ifc-3dtiles_instance\\3dtiles_instance", opts);
    console.timeEnd("t_import");

}());



process.on('uncaughtException', (err) => {
    console.log('Caught exception: ' + err);
});

setTimeout(() => {
    console.log("timeout")
}, 10000000);







